package com.zdp.common.util;

import com.zdp.common.constant.ApiConstant;
import com.zdp.common.exception.GlobalException;
import org.apache.commons.lang3.StringUtils;
import org.springframework.util.CollectionUtils;

import java.util.List;
import java.util.Optional;

/**
 * @author sesshomaru
 * @date 2021/7/30
 * 断言工具
 */
public class AssertUtil {

    /**
     * 判断字符串非空
     * @param str
     * @param message
     */
    public static void isNotBlank(String str, String message) {
        if (StringUtils.isBlank(str)) {
            execute(message);
        }
    }

    /**
     * 判断对象非空
     * @param obj
     * @param message
     */
    public static void isNotNull(Object obj, String message) {
        if (!Optional.ofNullable(obj).isPresent()) {
            execute(message);
        }
    }

    /**
     * 判断数组不能为空
     * @param array
     * @param message
     * @param <T>
     */
    public static <T> void arrayIsNotEmpty(List<T> array, String message) {
        if (CollectionUtils.isEmpty(array)) {
            execute(message);
        }
    }

    /**
     * 判断结果是否为真
     * @param isTrue
     * @param message
     */
    public static void isTrue(boolean isTrue, String message) {
        if (isTrue) {
            execute(message);
        }
    }



    private static void execute(String exceptionDescription) {
        String msg = ApiConstant.ERROR_MESSAGE;
        if (StringUtils.isNotBlank(exceptionDescription)) {
            msg = exceptionDescription;
        }
        throw new GlobalException(msg);
    }
}
